package ar.uba.fi.algo3.tp3.vista;

import ar.uba.fi.algo3.titiritero.vista.Imagen;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageDecoder;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.FilteredImageSource;
import java.awt.image.ImageProducer;
import java.awt.image.RGBImageFilter;
import java.io.InputStream;

public class ImagenTransparente extends Imagen {

    @Override
    public void setNombreArchivoImagen(String nombreArchivoImagen) {
        this.nombreArchivoImagen = nombreArchivoImagen;
        InputStream in = getClass().getResourceAsStream(this.nombreArchivoImagen);
        JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
        try {
            this.imagen = decoder.decodeAsBufferedImage();
            this.imagen = ImagenTransparente.hacerTransparente(this.imagen);
            in.close();
        } catch (Exception ex) { 
        }
    }

    public static Image hacerTransparente(Image i) {
        RGBImageFilter imgFilter = new RGBImageFilter() {

            public int filterRGB(int x, int y, int rgb) {

                if ((rgb & 0x00FF0000) < 0x00150000 && (rgb & 0x0000FF00) < 0x00001500 && (rgb & 0x000000FF) < 0x00000015) {
                    return 0x00FFFFFF & rgb;
                } else {
                    return rgb;
                }
            }
        };
        ImageProducer ip = new FilteredImageSource(i.getSource(), imgFilter);
        return Toolkit.getDefaultToolkit().createImage(ip);
    }
}
